home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_weap_submachine.cog < prev    next >
Text File  |  1999-11-15  |  5KB  |  244 lines

  1. # Jones 3D Cog Script
  2. #
  3. # weap_Submachine.cog
  4. #
  5. # This COG controls the PPSH-441 Submachine Gun.
  6. #
  7. # [RandyT]
  8. #
  9. # (C) 1998 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12.  
  13. symbols
  14.  
  15. message        startup
  16. message        fire
  17. message        aim
  18. message        activated
  19. message        deactivated
  20. message        selected
  21. message        deselected
  22. message        callback
  23.  
  24. sound        bang=gen_submachine_fire.wav    local    # Autoloaded
  25. sound        trail=gen_submachine_trail.wav    local    # Autoloaded
  26. sound        pull=gen_rifle_pull.wav            local    # Autoloaded
  27. sound        put=gen_rifle_put.wav            local    # Autoloaded
  28.  
  29. template    projectile=+submachine            local    # Autoloaded
  30. template    smoke1=+pistol_smoke1            local    # Autoloaded
  31. template    smoke2=+pistol_smoke2            local    # Autoloaded
  32.  
  33. thing        player                            local
  34. thing        bullet                            local
  35.  
  36. flex        aimFOV=10.0                        local
  37. flex        aimMax=90.0                        local
  38. flex        aimWait=0.3                        local
  39. flex        fireWait=0.15                    local
  40.  
  41. int            handNode                        local
  42. int            holsterMesh                        local
  43. int            weaponNum=8                        local
  44. int            fireSnd=-1                        local
  45. int            callNum                            local
  46.  
  47. int            bActivated=0                    local
  48.  
  49. vector        firePos                            local
  50.  
  51. end
  52.  
  53. # ===================================================================
  54.  
  55. code
  56.  
  57. startup:
  58.  
  59.     player = GetLocalPlayerThing();
  60.     handNode = GetNodeByName(player, "inrhand");
  61.     holsterMesh = GetMeshByName(player, "intorso");
  62.  
  63.     if (IsThingModelName(player, "gen_in_shirt.3do"))
  64.     {
  65.         LoadHolsterModel(weaponNum, "torso_shirt_ppsh-41.3do");
  66.     }
  67.     else if (IsThingModelName(player, "gen_in.3do"))
  68.     {
  69.         LoadHolsterModel(weaponNum, "torso_in_ppsh-41.3do");
  70.     }
  71.     else
  72.     {
  73.         LoadHolsterModel(weaponNum, "torso_guy_ppsh-41.3do");
  74.     }
  75.  
  76.     if (GetLastRifle(player) == weaponNum)
  77.     {
  78.         SetHolsterModel(player, weaponNum, holsterMesh);
  79.     }
  80.     
  81.     if (GetSenderRef() == 9999) # Call is from Guybrush cheat...
  82.     {
  83.         if (GetCurWeapon(player) == weaponNum)
  84.         {
  85.             ResetHolsterModel(player, 3);
  86.         }
  87.     }
  88.  
  89.     return;
  90.  
  91. # -------------------------------------------------------------------
  92.  
  93. fire:
  94.  
  95.     # Make sure Indy's not out of ammo
  96.     if (GetInv(player, weaponNum) < 1)
  97.     {
  98.         PlayVoiceMode(player, 123);
  99.         SelectWeapon(player, 3);
  100.         return;
  101.     }
  102.  
  103.     # Fire away...
  104.     firePos = GetThingJointPos(player, handNode);
  105.     bullet = FireProjectile(player, projectile, -1, 66, firePos, '-2.5 35.0 0.0', 1.0, 0x320, aimFOV, aimMax);
  106.  
  107.     if (fireSnd == -1)
  108.     {
  109.         fireSnd = PlaySoundThing(bang, player, 1.0, -1, -1, 0x881);
  110.     }
  111.  
  112.     if (Rand() < 0.5) CreateThing(smoke1, bullet);
  113.     else CreateThing(smoke2, bullet);
  114.  
  115.     ChangeInv(player, weaponNum, -1.0);
  116.     SetFireWait(player, fireWait);
  117.  
  118.     return;
  119.  
  120. # -------------------------------------------------------------------
  121.  
  122. aim:
  123.  
  124.     if (GetParam(0))
  125.     {
  126.         if (!IsAiming(player) && !bActivated)
  127.         {
  128.             while ((PlayMode(player, 63, 0) == -99) && (!bActivated))
  129.             {
  130.                 Sleep(0.01);
  131.             }
  132.         }
  133.     }
  134.     else if (IsModePlaying(player, 63) && !bActivated)
  135.     {
  136.         SetAimWait(player, aimWait);
  137.         StopMode(player, 63, aimWait);
  138.         PlayMode(player, 68, 0);
  139.     }
  140.  
  141.     return;
  142.  
  143. # -------------------------------------------------------------------
  144.  
  145. activated:
  146.  
  147.     bActivated = 1;
  148.     SetAimWait(player, aimWait);
  149.  
  150.     if (!IsAiming(player))
  151.     {
  152.         while (PlayMode(player, 63, 0) == -99)
  153.         {
  154.             Sleep(0.01);
  155.         }
  156.     }
  157.  
  158.     ActivateWeapon(player, aimWait);
  159.  
  160.     return;
  161.  
  162. # -------------------------------------------------------------------
  163.  
  164. deactivated:
  165.  
  166.     bActivated = 0;
  167.  
  168.     if (!IsAiming(player))
  169.     {
  170.         SetAimWait(player, aimWait);
  171.         StopMode(player, 63, aimWait);
  172.         PlayMode(player, 68, 0);
  173.     }
  174.  
  175.     if (fireSnd != -1)
  176.     {
  177.         StopSound(fireSnd, 0.0);
  178.         fireSnd = -1;
  179.     }
  180.  
  181.     PlaySoundThing(trail, player, 1, -1, -1, 0x880);
  182.     DeactivateWeapon(player);
  183.  
  184.     return;
  185.  
  186. # -------------------------------------------------------------------
  187.  
  188. selected:
  189.  
  190.     SetMountWait(player, 0.8);
  191.  
  192.     SetArmedMode(player, 4);
  193.     SetCurWeapon(player, weaponNum);
  194.     SetThingFireOffset(player, '-0.03 0.038 0.007'); 
  195.  
  196.     CaptureThing(player);
  197.     PlayMode(player, 62, 0);
  198.  
  199.     return;
  200.  
  201. # -------------------------------------------------------------------
  202.  
  203. deselected:
  204.  
  205.     if (IsAiming(player))
  206.     {
  207.         SetAimWait(player, aimWait);
  208.         StopMode(player, 63, aimWait);
  209.     }
  210.  
  211.     SetMountWait(player, 1.0);
  212.  
  213.     StopMode(player, 62, 0);
  214.  
  215.     CaptureThing(player);
  216.     PlayMode(player, 64, 0);
  217.  
  218.     SetArmedMode(player, 0);
  219.  
  220.     return;
  221.  
  222. # -------------------------------------------------------------------
  223.  
  224. callback:
  225.  
  226.     callNum = GetParam(1);
  227.     ReleaseThing(player);
  228.  
  229.     if (callNum == 28)
  230.     {
  231.         PlaySoundThing(pull, player, 1, -1, -1, 0x880);
  232.         ResetHolsterModel(player, 3);
  233.         SetWeaponModel(player, weaponNum);
  234.     }
  235.     else if (callNum == 29)
  236.     {
  237.         PlaySoundThing(put, player, 1, -1, -1, 0x880);
  238.         SetHolsterModel(player, weaponNum, holsterMesh);
  239.         ResetWeaponModel(player);
  240.     }
  241.  
  242.     return;
  243.  
  244. end